perm filename RHYTH.F4[NEW,LCS]25 blob sn#433859 filedate 1979-04-15 generic text, type T, neo UTF8
00100	C***** SUBRS RHYTH, NOTNUM, DOTS  ********  
00200	
00300		SUBROUTINE RHYTH
00400		COMMON/RINP/R(10,85),POSNT(0/99)
00500		1 /RMOD/RMODE2,SET4,IBEAM,NOSET,STEM,STUP,NTC,PS2,
00600		1 RA,RDD,ITB,POSB /PTR/KWDS(1) /FRMT/FQZ(3),IREAD
00700		1 /XRN/RN(1) /IDEV/IDEV
00800		1 /SCM/V(78),I,LCNT,STAFF,LIST(200),REND
00900		1 /SCX/JALPHA(30),JX,JXX,JZ,IRHY,JD,KA,KB,IZ
01000		1 /SC/J,L,MK,ISKP,XMINUS,N,IEXP,LK,NNUM,JJ,JA,DBST,
01100		1 NFLG,KXX,ISEMI,IQT,VX(50),IAMP,K,KN,M,MODE,IBLA
01200		1 /ALF/INP(59),NX,NOTE,JSET,KZ,KX,AVGPOS,RLPOS,RLP2,
01300		1 AVP2,ZX,RE,ZZ,RD,RSTX
01400	C   SEE ALSO FILLMS, SETLET AND SETUP  RE. /FLM/
01500		DIMENSION RPOS(2,100)
01600		COMMON R2,JH,CENTR,J2,R3,R4,R5,RJQ(17),J3,JQ(19)
01700		1 /DPY/ST(4000),MEDIT,GO /LIMIT/LIMIT,ITEM,NL,NO,NONO
01800		1 /POS/POS1,POS2 /STF/RSTFAC(0/7),RSTJ2
01900		EQUIVALENCE (VX(1),X),(VX(2),Y),(VX(7),Z),(RPOS,ST(3400))
02000		1,(VX(3),AB),(VX(4),T),(VX(5),RB),(VX(6),X2)
02100		1,(VX(8),C),(VX(9),S),(VX(10),X3)
02200	
02300	CCC	DATA FIB/.75/
02400	C  FIB IS FOR PSUEDO-FIBONACCI SPACING
02500		RSTJ3=RSTFAC(IFIX(STAFF))
02600		POSNT(0)=-1
02700		POSNT(1)=-1
02800	C IN CASE 1ST NOTE IS AT POS. ZERO
02900		NX=-1
03000		JX=0
03100		T=0
03200		Y=0
03300		NOTE=0
03400		ICNTPT=-1
03500		NOSET=0
03600		JSET=0
03700	C  STUP IS NEG. IF SETUP IS NOT READY
03800		IF(STUP)GO TO 341
03900		IF(SET4.NE.STAFF)GO TO 70
04000		NOSET=-1
04100	C  TO ADD MORE NOTES ON SETUP LINE. WIPES OUT P9 AT END OF SCMSS.
04200		GO TO 270
04300	70	DO 370 K=1,ITEM-IZ-1
04400	C LOOKS ONLY AT THINGS BEFORE CURRENT INPUT.
04500		J=KWDS(K)
04600		IF(RN(J+1).GT.2)GO TO 370
04700		IF(RN(J+2).EQ.STAFF)GO TO 270
04800	370	CONTINUE
04900		GO TO 170
05000	270	ICNTPT=0
05100	C THIS WILL CAUSE NOTES ADDED TO LINE TO HAVE NO RHYTH VAL IN P9
05200	170	KZ=1
05300		POS2=PS2
05400	C  GETS LAST ↑↑ POS. FROM SETUP
05500		JSET=-1
05600	C  NEXT NUM.(100) IS LIMIT FOR STF.4 (CAN BE UP TO 300-SEE /FLM/)
05700		DO 9 KX=1,100
05800	9	IF(RPOS(2,KX).GE.0)GO TO 10
05900	10	AVGPOS=RPOS(1,KX)
06000		RLPOS=AVGPOS
06100	344	KX=KX+1
06200		IF(RPOS(2,KX).EQ.-3)GO TO 344
06300	C**** IGNORES CLEFS (BUT NOT BARS) IN AUTOMATIC SPACING ***** 10/76
06400		RLP2=RPOS(1,KX)
06500	343	AVP2=RPOS(2,KX)-.001
06600		IF(AVP2.GT.0)GO TO 341
06700		KX=KX+1
06800		GO TO 343
06900	C  AVERAGED AND REAL POSITIONS FROM 'SETUP'
07000	
07100	C  NEXT FOR NON-SETUP
07200	341	DO 34 K=1,IRHY
07300		CALL DOTS(VAL,RH,K,DOT)
07400	C VAL=RHYTH. VALUE (QTR=1), RH=DENOMINATOR (QTR=4), DOT=NUM OF DOTS
07500	C  88TH NOTES ARE TAKEN AS GRACE NOTES. THEN BECOME 32NDS.
07600		IF(RH.NE.88)GO TO 345
07700		IF(JSET)GO TO 34
07800	C  GRACE NOTES SKIPPED IN AUTOMATIC SETUP
07900		VAL=.1    
08000	CFIB345	IF(STUP.LT.-1)VAL=PFIBX(VAL)
08100	345	IF(STUP.LT.-1)VAL=14.0*EXP(ALOG(VAL)*0.5849624)
08200	C THIS IS EXP((ALOG(A)/ALOG(2.0))*ALOG(1.5))  NOT FIBBONACI (1.618)
08300	CCC345	IF(STUP.LT.-1)Z=Z+(.125-Z)*FIB
08400	C  STUP CAN BE SET TO .LT.-1 IN NOTBMS FOR PSUEDO-FIBONACCI SPACE
08500		Y=Y+VAL
08600	34	CONTINUE
08700	C  Y=TOTAL TIME
08800	C A SAFEGUARD
08900	C  SAVES POS1 FOR POSITIONING MF, CRESC. ETC.
09000		NTC=0
09100	C  THE WORD COUNT FOR REAL NOTES.
09200		IF(JSET)GO TO 3421
09300	
09400		IF(POS1.LT.POS2)POSX=POS1
09500	C  SAVES IT FOR BACKUP
09600		IF(POS1.GE.POS2)POS1=POSX
09700	
09800		Z=POS2-POS1
09900		ZX=Z
10000	342	DO 1 K=1,IZ
10100		X=R(1,K)
10200		IF(X.LT.3.)GO TO 1
10300	C  JUMP IF NOTE OR REST
10400		IF(X.NE.17.)GO TO 8
10500	C   JUMP IF NOT A KEY SIG.
10600		RA=AMOD(R(5,K),100.0)
10700	C  100+KEY SIG NUM  =  SIG MADE UP OF NATURALS.
10800		RA=2.+ABS(RA)*2.0
10900		IF(K.GT.1)R(8,K-1)=R(8,K-1)+RSTJ3
11000	C PUSH KSIG 1*SIZE TO RIGHT OF PREVIOUS ITEM.
11100		GO TO 6
11200	8	IF(X.NE.4.)GO TO 81
11300	C   NEXT IS FOR BAR LINES
11400		RA=3
11500		J=K+1
11600		RE=R(1,J)
11700		IF(RE.EQ.3.)RA=1.5
11800	C  A CLEF
11900		IF(RE.EQ.18)RA=2.5
12000	C  A METER
12100		IF(RE.NE.1)GO TO 83
12200		IF(AMOD(R(5,J),10.).NE.0)RA=4.5
12300	C  FINDS ACCI ON NEXT NOTE.
12400	83	IF(K.EQ.IZ)RA=0
12500	C  END OF STAFF
12600		GO TO 6
12700	82	RA=5
12800	CGHB82	RA=6
12900		GO TO 83
13000	81	IF(X.EQ.18)GO TO 82
13100		RA=6.
13200		IF(K.LT.3)RA=8.
13300	CGHB	RA=7.
13400	C   FOR CLEFS
13500	CGHB	IF(K.LT.3)RA=9.
13600	C   THE FIRST CLEF IS NOT MINI
13700	6	RA=RA*RSTJ3
13800	C  SO SPACE WILL DEPEND ON SIZE OF STAFF
13900		Z=Z-RA
14000		R(8,K)=RA
14100	C   STORES SPACE NUM THAT MUST BE GIVEN BACK
14200	1	CONTINUE
14300	C   SUBTRACTS SPACE FOR CLEF OR BAR.  WILL ADD BOTH LATER.
14400	C  POS1 AND Z ARE FOR RHYTHMIC SPACING
14500	C  SPACE FOR NON-NOTES
14600	3421	K=0
14700		IF(ABS(Y-RA).LE..001)GO TO 3
14800		IF(JSET)CALL MISMCH(RA,Y)
14900	C TYPES MISMATCH MESSAGE
15000	
15100	C   LOOP TO END
15200	3	K=K+1
15300	C   K IS COUNTER
15400		T=0
15500	CXX	R(7,K)=0
15600		RE=R(1,K)
15700		IF(RE.LE.2.)GO TO 2
15800		RD=R(8,K)
15900		R(8,K)=0
16000		IF(JSET)GO TO 71
16100	
16200	7	IF(K.EQ.IZ)POS1=POS2
16300		IF(R(1,K-1).GT.2.)GO TO 73
16400		IF(K.EQ.1)GO TO 73
16500		IF(RE.EQ.4.)GO TO 73
16600		Z=Z+RD/3.
16700	C   RETURNS 1/3 OF THE SPACE IF PREV. ITEM IS NOTE OR REST
16800		POS1=POS1-RD/3
16900	C  THIS CAN RESULT IN OVERLAP WHICH MUST BE EDITED OUT.!!
17000	73	R(3,K)=POS1
17100	72	POS1=POS1+RD
17200	C   ABOVE SECTION LEAVES ROOM FOR CLEF OR BAR
17300		GO TO 337
17400	
17500	C  40???   50????  WHY NOT 100?
17600	71	DO 74 J=KZ,80
17700	74	IF(RE.EQ.-RPOS(2,J))GO TO 75
17800		POS=R(3,K-1)+4
17900		GO TO 76
18000	75	POS=RPOS(1,J)
18100		KZ=J+1
18200	C  FOUND SAME TYPE OF ITEM.
18300	76	R(3,K)=POS
18400		GO TO 337
18500	
18600	2	JX=JX+1
18700	21	CALL DOTS(VAL,RH,JX,DOT)
18800		V(JX)=VAL
18900		IF(RE.NE.2)GO TO 121
19000		V(JX)=-VAL
19100	C  SHOWS RESTS IN AUTO. BEAM SECTION.(ASSUMES REST WAS A + NUMB.)
19200		R(7,K)=VAL
19300		GO TO 210
19400	121	IF(R(8,K).GE.-1.)R(9,K)=VAL
19500	C  STORES RHYTH VALUE FOR LATER USE IN PART EXTRACTOR IF NOT CHORD NOTE.
19600	CCC	IF(AB.GT..05)GO TO 210
19700		IF(RH.NE.88.)GO TO 210
19800		R(3,K)=-1.
19900		R(4,K)=R(4,K)+100.
20000	C  WILL THIS BE OK WITH NOTES BELOW B3 (I.E. NEG POSITIONS.
20100		R(7,K)=1
20200	C  FOUND A GRACE NOTE  (88TH NOTE)   
20300		RB=4./88.
20400		R(9,K)=RB    
20500		JZ=1
20600		IF(STEM.GE.0)GO TO 1211
20700		IF(R(9,K-1).EQ.RB)GO TO 1211
20800	4211	IF(V(JX+1).EQ.88..AND.R(1,K+1).EQ.1)GO TO 1211
20900	C  STEM WILL BE UP UNLESS PRESET OR TWO OR MORE IN A ROW.
21000		IF(R(5,K).GE.20.)R(5,K)=R(5,K)-10.
21100	C NOW STEM IS UP
21200	
21300	1211	IF(R(8,K+JZ).GE.0)GO TO 211
21400		J=K+JZ
21500	C GRACE NOTE CHORDS
21600		R(3,J)=-1
21700	C  FOR AUTO-SPACING AT 337
21800		R(4,J)=R(4,J)+100.
21900	C MAKE IT A MINI-NOTE
22000		R(8,K)=1000.+ABS(R(4,K)-R(4,J))
22100	C  EXTEND THE STEM
22200		JZ=JZ+1
22300	C  FOR MORE CHORD NOTES.  SHOULD I CHECK FOR END (IZ)?
22400		GO TO 1211
22500	C  ** NOT NOW ***TURNS STEM OVER. UNLESS STEM DIRECTIONS WERE FIXED.(SU/SD/)
22600	211	IF(JZ.LE.1)R(8,K)=1000
22700	2211	IF(JSET.GE.0)GO TO 3211
22800		K=K+JZ-1
22900	C  POS WILL BE SET AT 336
23000		NTC=NTC+1
23100	C  UPDATE THE COUNTER FOR IMPORTANT POSITIONS. POSNT SET AT 336
23200		POSNT(NTC)=-1
23300		GO TO 337
23400	3211	VAL=.1    
23500	C IT USED TO JUMP.  NOW MAKES SPACE FOR GRACE NOTES AS 32NDS.
23600	210	RB=0
23700	C  FOR AUTOMATIC SETUP
23800		JZ=K
23900	C  JZ WILL BE USED NEAR END
24000	CC3634	IF(AMOD(AB,.1875).EQ.0)GO TO 122
24100	CC	T=IDOT*10
24200	C IDOT IS NUM OF DOTS
24300		IF(RE.EQ.2.)GO TO 35
24400		IF(RH.EQ.88)GO TO 22
24500	CXX	T=0
24600		IF(RH.LT.8)GO TO 522
24700	CC	IF(R(5,K).LT.10)GO TO 422
24800	C DON'T ADD TAILS TO STEMLESS NOTE. (IT CONFUSES 'BEAMS')
24900		T=IFIX(ALOG(RH)/0.6931472+.001)-2.0
25000	C RH=8=1 TAIL,  16=2TAILS, ETC. THE NUM. (8,16) IS RESULT OF 2 TO THE NTH.
25100	522	RB=0
25200		IF(DOT.EQ.0)GO TO 422
25300		IF(R(6,K).GE.20)RB=100 
25400	C  TO SHIFT DOT DOWN 2 STEPS
25500	422	R(7,K)=T+RB+DOT
25600		T=0
25700	cc422	R(7,K)=T+IDOT
25800	C  PUTS ONE OR MORE DOTS
25900	CC	GO TO 36
26000		GO TO 22
26100	
26200	35	IF(R(6,K).GE.0)GO TO 135
26300		R(6,K)=-1
26400		GO TO 22
26500	C  ADDS DOT TO REST. (IF R6 IS -2. = INVIS. REST. CHANGE IT TO -1)
26600	135	IF(R(8,K).EQ.0)R(6,K)=DOT/10.
26650	C  NO DOTS ON 'WHOLE MEASURE' RESTS
26700	CC35	R(6,K)=T/10.
26800	CC36	RB=VAL/3.
26900	CC	IF(T.NE.1)RB=(4*VAL)/7
27000	C  TO KEEP TAIL ON DOTTED NOTE
27100	
27200	22	POS=POS1
27300		IF(R(6,K).GE.30)R(6,K)=R(6,K)-30
27400	C  30 NEEDED FOR SOME CASES WITH DOTS ON CHORDS.
27500		IF(JSET.EQ.0)GO TO 220
27600	
27700	C  NEXT IS FOR SETUP
27800	222	IF(NOTE)GO TO 223
27900	C  FIRST TIME A NOTE IS FOUND.
28000		NOTE=-1
28100		POS1=RLPOS
28200		Z=POS2-POS1
28300	C  RESETS SPACE AVAILABLE, ZZ IS SPACE FOR NON-NOTES
28400	223	IF(POS1.LT.AVP2)GO TO 221
28500	224	KX=KX+1
28600	C???? OCT, 73	 	IF(NX.EQ.0)GO TO 225
28700		L=KX
28800	1228	IF(RPOS(2,L).NE.-3)GO TO 228
28900		L=L+1
29000	C  IGNORE CLEFS (BUT NOT BARS) ********* 10/76
29100		GO TO 1228
29200	228	IF(NX)RLP2=RPOS(1,L)
29300		NX=-1
29400	225	IF(RPOS(2,KX-1))GO TO 227
29500		RLPOS=RPOS(1,KX-1)
29600		AVGPOS=AVP2
29700	227	AVP2=RPOS(2,KX)-.001
29800		IF(AVP2.GT.0)GO TO 223
29900	C  0 IN RPOS=POS. OF NON-NOTE
30000	CC****** WHY NEEDED?? 6/74 ***	IF(RLP2.GE.POS1)NX=0
30100		NX=0
30200	CC*****↑↑↑↑ CHANGED FROM ABOVE ***  6/74
30300		GO TO 224
30400	221	POS=(POS1-AVGPOS)*(RLP2-RLPOS)/(AVP2-AVGPOS)+RLPOS
30500	220	R(3,K)=POS
30600	4634	IF(RE.NE.1)GO TO 44
30700		IF(POS.EQ.POSNT(NTC))GO TO 2634
30800	C  SKIPS OTHER CHORD NOTES.
30900		NTC=NTC+1
31000		POSNT(NTC)=POS
31100	C  SAVES IT FOR NUMBS ABOVE NOTES, ETC.
31200	2634	IF(RH.LT.4)GO TO 4
31300	C JUMP IF DENOM. IS LESS THAN 4.  I.E. 1/2 NOTE ETC.
31400	44	L=K+1
31500		IF(R(8,L).GE.0)GO TO 1634
31600		IF(R(1,L).NE.1.)GO TO 1634
31700	C   JUMP IF NOT DOUBLE STOP
31800	C  DELETES STEM FROM WHOLE NOTE CHORD (NOW DONE IN NOTWRT IF P7=1)
31900		R(3,L)=R(3,K)
32000		K=L
32100	CC	R(8,K)=0
32200		GO TO 522 
32300	C  LOOPS BACK TO PICK UP MORE CHORD NOTES
32400	
32500	C 'WHITENS' HALF, WHOLE AND TRIPLET HALF NOTES.
32600	4	RA=-R(6,K)
32700		IF(RA.EQ.0)RA=-1
32800		IF(RH.GE.2.)GO TO 144
32900		R(5,K)=AMOD(R(5,K),10.0)
33000	C  TAKES STEM INFO OFF ANYTHING LONGER THAN 1/2 NOTES -- FOR SLUR ROUTINE.
33100		RP=1
33200		IF(RH.LE..5)RP=2
33300		R(7,K)=R(7,K)+RP
33400	C  +1=WHOLE NOTE WILL PRINT  +2=DBL WHL NT.
33500	CC NOT NEEDED BECAUSE OF ABOVE. 	RA=-2.
33600	144	R(6,K)=RA
33700		GO TO 44
33800	
33900	1634	T=POS1
34000		RP=VAL
34100	CFIB	IF(STUP.LT.-1)RP=PFIBX(VAL)
34200		IF(STUP.LT.-1)RP=14.0*EXP(ALOG(RP)*0.5849624)
34300	C THIS IS EXP((ALOG(A)/ALOG(2.0))*ALOG(1.5))  NOT FIBBONACI (1.618)
34400	CCC	IF(STUP.LT.-1)RP=AB+(.125-AB)*FIB
34500	C  FOR PSUEDO-FIB. SPACING
34600		POS1=RP/Y*Z+POS1
34700	535	IF(R(1,JZ).EQ.1.)GO TO 337
34800		RA=R(4,JZ)
34900	C  SETS REST
35000		IF(R(8,JZ).NE.0.1)GO TO 537
35100		T=-4
35200	C*****	R(8,JZ)=-2
35300	C  -2 CENTERS THE SIGN UNDER THE RIGHT CONDITIONS
35400		GO TO 536
35500	CC537	IF(VAL.LT.2)GO TO 538
35600	CC	T=-1
35700	CC	IF(RH.LT.2)T=-2
35800	CC	IF(RH.LT.1)T=-3
35900	C  -1=HLF RST, -2=WHOLE, -3=DBL WHL RST, -4=REPEAT BAR SIGN(./.)
36000	CC	GO TO 536
36100	537	T=IFIX(ALOG(RH)/0.6931472+.001)-2.
36200	536	R(5,JZ)=T
36300	CCC	GO TO 337
36400	C*******  4/74  NEW WAY TO FIND TAILS
36500	C  OMITS RESTS  (REALLY???)
36600	CCC334	R(7,JZ)=T+R(7,JZ)
36700	337	IF(K.LT.IZ)GO TO 3
36800	CXXXXXXXX	M=NTC+1		XXXXXXXXX 9/28/78
36900	C********* WAS M=NTC ******* 4/14/78
37000		M=NTC
37100		DO 335 K=IZ,1,-1
37200		IF(R(3,K).GE.0)GO TO 335
37300		IF(K.NE.IZ)GO TO 336
37400		R(3,K)=POS2-4.
37500		GO TO 335
37600	336	N=K-1
37700	1336	RA=R(3,N)
37800		IF(RA.GT.0)GO TO 2336
37900		N=N-1
38000		IF(N.GT.0)GO TO 1336
38100	C GO BACK (IF MORE GRACE NOTES.) TO FIND PREVIOUS BIG NOTE.
38200	2336	T=R(3,K+1)
38300		RB=T-RA
38400		RA=3
38500		IF(RB.LE.4)RA=RB/2.
38600	C IF SPACE IS SMALL USE 1/3 OF IT.
38700		RB=T-RA
38800	C NEXT FOR GRACE NOTE CHORDS
38900		IF(R(8,K+1).GE.0)GO TO 1335
39000		RB=T
39100	CC	RB=R(3,K+1)
39200	CXXXX	M=M+1
39300	1335	R(3,K)=RB
39400		POSNT(M)=RB
39500	335	IF(R(8,K).GE.0.AND.R(1,K).EQ.1)M=M-1
39600	C COUNT ONLY NOTES - BUT NOT NON-RHYTH CHORD NOTES.
39700		K=0
39800	45	K=K+1
39900	C  NEXT IS TO ARRANGE DOTS.
40000		IF(R(7,K).LT.10)GO TO 451
40100		RA=R(3,K)
40200		DO 452 M=K+1,IZ
40300		IF(R(3,M).NE.RA)GO TO 453
40400	C  JUMP IF NOT CHORD NOTE.
40500		T=R(7,M)
40600		RB=R(4,M)
40700		IF(T.LT.100.)GO TO 452
40800	C  JUMP IF NOTE IS NOT ON LEFT SIDE OF UPWARD STEM
40900		IF(RB-R(4,M-1).NE.2)GO TO 452
41000		IF(AMOD(RB,2.).NE.0)R(7,M)=AMOD(T,10.)
41100	C  TAKES AWAY DOT IN CERTAIN CASES TO AVOID CONFUSION.
41200	452	CONTINUE
41300	453	K=M-1
41400	451	IF(K.LT.IZ)GO TO 45
41500	
41600		IF(ICNTPT)GO TO 13
41700		DO 113 K=1,IZ 
41800		RA=R(1,K)
41900		IF(RA.GT.2)GO TO 113
42000	C THIS ZEROS RHYTH PARAM IF NOTES WERE ALREADY ON THIS LINE.
42100		J=9
42200		IF(RA.EQ.2)J=7
42300		R(J,K)=0
42400	113	CONTINUE
42500	13	N=IZ
42600		NTC=NTC+1
42700		POSNT(NTC)=200
42800		POSNT(0)=0
42900		IF(IREAD.GE.0.AND.IDEV.EQ.5)CALL NOTNUM
43000		END
43100	
43200		SUBROUTINE NOTNUM
43300	CC	DIMENSION ISU(390)
43400		COMMON R2,JH,CENTR,J2,R3,R4,R5,RJQ(17),J3,J4,J5,JQ(17)
43500		1 /RINP/R(10,85),POSNT(0/99)
43600		1 /RMOD/RMODE2,SET4,IBEAM,NOSET,STEM,STUP,NTC,PS2
43700		1 /SCM/V(78),I,LCNT,STAFF,LIST(200),REND
43800		1 /POSI/STFF(0/7),JJ2,POSQ /DPY/ST(4000),MEDIT,GO
43900		CALL DPYSET(3,ST(3600),390)
44000		CALL DPYBRT(6)
44100		J2=STAFF
44200		POSQ=STFF(J2)
44300		J5=1
44400		R4=20
44500	C  R5=0=1  STANDARD SIZE IS USED.
44600		DO 131 K=1,NTC-1
44700		R3=RHORZ(POSNT(K))
44800		CALL PNUM
44900	C  GOES TO DRAW A NUMBER OVER A NOTE
45000		J5=J5+1
45100		IF(J5.EQ.10)J5=0
45200	131	CONTINUE
45300	132	CALL DPYOUT(3)
45400		CALL SETPOG(1)
45500		END
45600	
45700		SUBROUTINE DOTS(VAL,RH,K,DOT)
45800		COMMON/SCM/V(1)
45900	C FINDS DOTS (1000S), GET RHYTH. AND RHYTHMIC VALUE (QTR=1)
46000		RH=V(K)
46100		IF(RH.EQ.0)RH=88.
46200		VAL=4/RH
46300		J=RH/1000.
46400		DOT=J*10
46500		IF(J.EQ.0)RETURN 
46600		RH=RH-J*1000
46700		VAL=4./RH
46800		Z=VAL
46900	1	Z=Z/2
47000		VAL=VAL+Z
47100		J=J-1
47200		IF(J.GT.0)GO TO 1
47300		END